package com.sharer.last.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sharer.last.base.model.PageVO;
import com.sharer.last.model.dto.category.CategoryChangeDTO;
import com.sharer.last.model.dto.category.CategoryQueryDTO;
import com.sharer.last.model.po.CategoryPO;
import com.sharer.last.model.vo.category.CategoryVO;

import java.util.List;


public interface CategoryService extends IService<CategoryPO> {
    /**
     * 根据分类名称查询数据
     *
     * @param categoryName
     * @return
     */
    CategoryPO getByCategoryName(String categoryName);

    /**
     * 根据id查询数据
     *
     * @param id 主键
     * @return
     */
    CategoryVO findById(Long id);

    /**
     * 根据分类名称查询数据
     *
     * @param name 分类名称
     * @return
     */
    CategoryVO findByCategoryName(String name);

    /**
     * 分页查询
     *
     * @param queryDTO 请求参数
     * @return
     */
    PageVO<CategoryVO> selectListByPage(CategoryQueryDTO queryDTO);

    /**
     * 查询分类数据
     * @return
     */
    List<CategoryPO> queryList(CategoryQueryDTO queryDTO);

    /**
     * 查询所有分类数据
     * @return
     */
    List<CategoryVO> selectAllList();

    /**
     * 新增分类
     *
     * @param categoryChangeDTO 分类数据
     * @return
     */
    void createCategory(CategoryChangeDTO categoryChangeDTO);

    /**
     * 新增分类
     *
     * @param categoryName 分类名称
     * @return
     */
    CategoryPO createCategory(String categoryName);

    /**
     * 更新分类
     *
     * @param categoryChangeDTO 分类数据
     * @return
     */
    void updateCategory(CategoryChangeDTO categoryChangeDTO);

    /**
     * 删除分类数据
     *
     * @param id 主键id
     * @return
     */
    void deleteCategoryById(Long id);

}
